﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CCL.SocketMessage.Request
{
    /// <summary>
    /// 로그를 보기위한 요청 Message의 Body를 제공합니다.
    /// </summary>
    public class ShowLog : Body
    {
        /// <summary>
        /// Project 고유 ID를 가져옵니다.
        /// </summary>
        public int ProjectID { get; private set; }

        /// <summary>
        /// 새로운 ShowLog 객체를 생성합니다.
        /// </summary>
        /// <param name="projId">Project 고유 ID</param>
        public ShowLog(int projId)
        {
            ProjectID = projId;
        }

        /// <summary>
        /// 직렬화된 byte 배열을 통해 ShowLog 객체를 생성합니다.
        /// </summary>
        /// <param name="bytes">직렬화된 byte 배열</param></param>
        public ShowLog(byte[] bytes)
        {
            int start = 0;

            ProjectID = BitConverter.ToInt32(bytes, start);
            start += sizeof(int);
        }

        /// <summary>
        /// 바이트 배열로 직렬화 합니다.
        /// </summary>
        /// <returns>직렬화된 바이트 배열</returns>
        public override byte[] GetByte()
        {
            byte[] bytes = new byte[GetSize()];

            byte[] temp;
            int start = 0;

            temp = BitConverter.GetBytes(ProjectID);
            Array.Copy(temp, 0, bytes, start, temp.Length);
            start += temp.Length;

            return bytes;
        }

        /// <summary>
        /// 직렬화 가능한 객체의 바이트 사이즈를 가져옵니다.
        /// </summary>
        /// <returns>직렬화된 바이트 사이즈</returns>
        public override uint GetSize()
        {
            return
                sizeof(int) +
                sizeof(int) +
                sizeof(int);
        }
    }
}
